package tk.mynoteapp.dev.wechat.pay.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * 微信支付V3版API配置数据
 */
@Component
@PropertySource("classpath:/wxpay_v3.properties")
@ConfigurationProperties(prefix = "v3")
public class WxPayV3Bean {
    /**
     * 应用编号
     */
    private String appId;
    /**
     * apiclient_key.pem 商户API私钥路径
     *  说明：商户申请商户API证书时，会生成商户私钥，并保存在本地证书
     *      文件夹的文件apiclient_key.pem中。私钥也可以通过工具从
     *      商户的p12证书中导出
     */
    private String keyPath;
    /**
     * 商户API证书路径
     *  说明：商户API证书是指由商户申请的，包含商户的商户号、公司名称、公钥信息的证书
     */
    private String certPath;
    /**
     * P12证书路径
     */
    private String certP12Path;
    /**
     * 微信平台证书路径
     *  说明：平台证书是指由微信支付负责申请的，包含微信支付平台标识、公钥信息的证书。
     *  商户可以使用平台证书中的公钥进行验签。
     */
    private String platformCertPath;
    /**
     * 微信商户号
     */
    private String mchId;
    /**
     * API密钥
     */
    private String apiKey;
    /**
     * V3版API密钥
     * 说明：
     *  1）此密钥用于微信支付回调通知和平台证书下载接口中关键内容的加解密，使用AES-256-GCM加密
     *  2）商户需先在【商户平台】->【API安全】的页面设置该密钥，
     *     请求才能通过微信支付的签名校验。密钥的长度为32个字节。
     */
    private String apiKey3;
    /**
     * 商户域名
     */
    private String domain;

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getKeyPath() {
        return keyPath;
    }

    public void setKeyPath(String keyPath) {
        this.keyPath = keyPath;
    }

    public String getCertPath() {
        return certPath;
    }

    public void setCertPath(String certPath) {
        this.certPath = certPath;
    }

    public String getCertP12Path() {
        return certP12Path;
    }

    public void setCertP12Path(String certP12Path) {
        this.certP12Path = certP12Path;
    }

    public String getPlatformCertPath() {
        return platformCertPath;
    }

    public void setPlatformCertPath(String platformCertPath) {
        this.platformCertPath = platformCertPath;
    }

    public String getMchId() {
        return mchId;
    }

    public void setMchId(String mchId) {
        this.mchId = mchId;
    }

    public String getApiKey() {
        return apiKey;
    }

    public void setApiKey(String apiKey) {
        this.apiKey = apiKey;
    }

    public String getApiKey3() {
        return apiKey3;
    }

    public void setApiKey3(String apiKey3) {
        this.apiKey3 = apiKey3;
    }

    public String getDomain() {
        return domain;
    }

    public void setDomain(String domain) {
        this.domain = domain;
    }

    @Override
    public String toString() {
        return "WxPayV3Bean{" +
                "appId='" + appId + '\'' +
                ", keyPath='" + keyPath + '\'' +
                ", certPath='" + certPath + '\'' +
                ", certP12Path='" + certP12Path + '\'' +
                ", platformCertPath='" + platformCertPath + '\'' +
                ", mchId='" + mchId + '\'' +
                ", apiKey='" + apiKey + '\'' +
                ", apiKey3='" + apiKey3 + '\'' +
                ", domain='" + domain + '\'' +
                '}';
    }
}
